Skip to main content

Introduction

Use the Lip Sync API to generate a new video where the speaker’s mouth movement is synchronized to a target audio track. Submit a source video URL and an audio URL, then poll the task status until the final result is ready.

Key Features

Async Processing

Submit once and retrieve results when processing completes

Simple Input

Create tasks with just a video URL and an audio URL

Flexible Playback

Choose how to handle cases where video is shorter than audio

Result Metadata

Get output video URL, cover image, duration, and error details

Workflow Overview

Lip sync video generation is an asynchronous 3-step process:
1

Submit Task

Call the create endpoint with your source video and source audio URLs
2

Processing

JoggAI performs lip sync generation in the background
3

Retrieve Result

Poll the task endpoint until status becomes success or failed
Lip sync generation is asynchronous. After submitting the task, store the returned task_id and use it to poll for progress and results.

Quick Start

Key Parameters

Playback Type Values

Pricing

Estimated usage can be calculated from output duration. Since 1 / 125 = 0.008, the displayed unit cost is approximately 0.01 credits per second when rounded up to 2 decimal places.
The video_url and audio_url must be publicly accessible direct URLs. Temporary or authenticated links may fail during processing.

Code Examples

Step 1: Submit Lip Sync Task

Response:
Save the task_id from the response. You will need it to poll the lip sync task result.

Step 2: Check Task Status

Response (Processing):
Response (Success):
Response (Failed):

Status Values

Poll every 5-10 seconds for active tasks. In production, avoid overly aggressive polling to reduce unnecessary API traffic.

Use Case Examples

Replace or localize speech in short-form videos while preserving the speaker’s visual delivery.
Reuse an existing talking-head video with a different audio track for updated messaging or campaigns.
Generate multiple lip sync tasks for different audio tracks and languages using the same base video.

Tips for Best Results

Input quality matters:
  • Use a clear frontal face shot when possible
  • Avoid heavy occlusion around the mouth area
  • Use clean audio with stable volume
  • Prefer publicly accessible CDN URLs over temporary download links
Playback strategy guidance:
  • Use normal when video duration already matches the audio well
  • Use normal_reverse when you want a simple loop-like extension effect
  • Use normal_reverse_by_audio when alignment should adapt to the audio duration
Polling guidance:
  • Start polling a few seconds after task creation
  • Poll every 5-10 seconds during active processing
  • Stop polling once status is success or failed

Troubleshooting

Issue: Task fails because the video or audio file cannot be downloaded.Solutions:
  • Ensure both URLs are publicly accessible
  • Avoid signed URLs that expire too quickly
  • Verify the files are reachable from outside your network
  • Confirm the linked file is the actual media file, not an HTML preview page
Issue: Status stays processing longer than expected.Solutions:
  • Continue polling with a moderate interval
  • Retry with smaller or simpler media files if needed
  • Verify source media is stable and downloadable
  • Contact support if the task remains stuck for an extended period

Create Lip Sync Video Task

Full request schema for submitting tasks

Get Lip Sync Video Task

Full response schema for task status and result

Check Video Result & Status

General guidance for polling asynchronous video tasks

Webhook Integration

Recommended callback pattern for async workflows